//
//  WMDataCache.h
//  WeightMaster
//
//  Created by sungeo on 15/8/14.
//  Copyright (c) 2015年 buddysoft. All rights reserved.
//

#import <Foundation/Foundation.h>
#import <CloudKit/CloudKit.h>
#import "BDiCloudManager.h"
#import "WMHelper.h"

extern NSString * const WeightsChangedNote;
extern NSString * const LastWeightChangedNote;

@class WMWeight;

@interface WMDataCache : NSObject <BDiCloudDelegate, UIAlertViewDelegate>

@property (nonatomic, strong, readonly) NSArray * weights;

@property BOOL hasQueriedWeights;


+ (instancetype)sharedInstance;

/**
 *  添加一条体重记录入口
 *
 *  @param weight 体重记录
 *
 *  @return YES，添加成功；NO，添加失败
 */
- (BOOL)addWeight:(WMWeight *)newWeight fromCloud:(BOOL)fromCloud;

/**
 *  从 iCloud 查询体重记录
 */
- (void)queryWeightsFromiCloud;

/**
 *  从 iCloud 删除所有体重记录
 */
- (void)deleteAllRecords;

/**
 *  获取最近一次记录的体重
 *
 *  @return weight
 */
- (WMWeight *)latestWeight;

/**
 *  最近 5 次体重记录-显示在首页
 *
 *  @return 体重记录数组
 */
- (NSArray *)latest5Weights;

/**
 *  返回历史体重的最大值和最小值
 *
 *  @return weightRange
 */
- (WMWeightRange)weightRange;

/**
 *  返回最小和最大体重对象
 *
 *  @param from 从哪里查询最大最小值；默认传入 nil 时，从体重历史记录中查询。
 *
 *  @return 最小值保存在数组的第0个位置，最大值保存在数组的第1个位置。无体重值的话，返回 nil。
 */
- (NSArray *)minAndMaxWeightObjects:(NSArray *)from;

@end
